package saei.service;

import java.util.ArrayList;
import java.util.Hashtable;
import java.util.List;

import saei.bean.Estado;
import saei.bean.vo.EstadoVO;
import saei.persistencia.DAO.EntidadPersistenteDAO;

@SuppressWarnings("unchecked")
public class ServiciosEstado {
	private static ServiciosEstado instacia;
	private Hashtable<String, Estado> estados;
	
	private ServiciosEstado() {
		estados = new Hashtable<String, Estado>();
		
		List<Estado> allStates = (List<Estado>) EntidadPersistenteDAO.buscarPorClase(Estado.class);
		for (Estado estado : allStates) {
			estados.put(estado.getCodigo(), estado);
		}
	}
	
	private static ServiciosEstado getInstancia()
	{
		if (instacia == null)
			instacia = new ServiciosEstado();
		
		return instacia;
	}
	
	public static Estado getEstadoConCodigo(String codigo) {
		return ServiciosEstado.getInstancia().estados.get(codigo);
	}
	
	public static Estado EstadoActivo() {
		return ServiciosEstado.getInstancia().estados.get("A");
	}
	
	public static Estado EstadoSinAsignar() {
		return ServiciosEstado.getInstancia().estados.get("SA");
	}
	
	public static Estado EstadoAlInterior() {
		return ServiciosEstado.getInstancia().estados.get("AI");
	}
	
	public static Estado EstadoACentral() {
		return ServiciosEstado.getInstancia().estados.get("AC");
	}
	
	public static Estado EstadoBaja() {
		return ServiciosEstado.getInstancia().estados.get("B");
	}
	
	public static Estado EstadoEnRepresentacion() {
		return ServiciosEstado.getInstancia().estados.get("ER");
	}
	
	public static Estado EstadoSinAsignarEnRepresentacion() {
		return ServiciosEstado.getInstancia().estados.get("SAR");
	}
	
	public static List<EstadoVO> buscarVOs() {
		List<EstadoVO> lista = new ArrayList<EstadoVO>();
		
		for (Estado estado : ServiciosEstado.getInstancia().estados.values()) {
			lista.add(estado.getVO());
		}
		
		return lista; 
	}
}
